//
//  QLWelcomeView.swift
//  MQLWeibo
//
//  Created by MQL-IT on 2017/3/19.
//  Copyright © 2017年 MQL-IT. All rights reserved.
//  欢迎页面


import UIKit
import Kingfisher

/// 欢迎页面
class QLWelcomeView: UIView {
    @IBOutlet weak var iconWidthCons: NSLayoutConstraint!
    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLabel: UILabel!
    @IBOutlet weak var iconBottomCons: NSLayoutConstraint!
    
    
    class func welcomeView() -> QLWelcomeView {
        
        let nib = UINib(nibName: "QLWelcomeView", bundle: nil)
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! QLWelcomeView
        //从xib加载的视图大小默认是600*600的
        v.frame = UIScreen.main.bounds
        
        return v
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        // 只是刚从XIB二进制文件将视图数据加载完成, 还没有和代码连线建立关系,所以开发时不要在这个方法里面更改UI
    }
    
    // XIB在这个方法中处理UI
    override func awakeFromNib() {
        
        //1.url
        guard let urlStr = NetWorkManager.shared.userAccount.avatar_large,
            let url = URL(string: urlStr) else { return  }
        
        //2.设置头像
        // 如果不指定占位视图, 之前设置的头像会被清空
        iconView.kf.setImage(with: url, placeholder: UIImage(named: "avatar_default_big"), options: nil, progressBlock: nil, completionHandler: nil)

        //3.设置头像圆角
        // 使用xib自动布局,这个方法时子视图还没有更新此时iconView的frame为0
        iconView.layer.masksToBounds = true
        iconView.layer.cornerRadius = iconWidthCons.constant / 2.0
        
    }
    
    // 自动布局系统更新约束完成后,会自动调用此方法
    // 通常对子视图布局进行修改
//    override func layoutSubviews() {
//        
//    }

    
    /// 视图被添加到window  表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图是使用布局来设置的, 只是设置了约束
        // 当视图被添加到窗口时, 根据父视图的大小, 计算约束值,更新控件位置
        //- layoutIfNeeded 会直接按照当前的约束直接更新控件的位置
        // 执行之后,控件所在位置就是xib中约束的位置
        self.layoutIfNeeded()
        
        iconBottomCons.constant = bounds.size.height - 200
        
        // 如果控件的frame还没有计算好,所有约束会一起进行动画
        UIView.animate(withDuration: 2.0,
                       delay: 0,
                       usingSpringWithDamping: 0.7, //弹力系数
                       initialSpringVelocity: 0, // 初始速度
                       options: [],
                       animations: {
                        //更新约束
                        self.layoutIfNeeded()
        })
        { (_) in
            UIView.animate(withDuration: 1.0, animations: { 
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
            
        }
    }

}
